package com.example.zxd;

import java.util.Scanner;

/**
 * 房屋装修<p>
 * 描述：
 * 小明家的院子里有一块矩形的泥坑，趁着这次房屋装修，小明想要用正方形的瓷砖整齐排列，把泥坑完全掩盖起来。
 *
 * 小明想要知道，最少需要多少块瓷砖才能做到，这样他才好去拼多多上买。
 *
 * 输入：
 * 输入共一行，包含三个整数 n
 * ， m
 *  和 a
 * 。
 *
 * n
 *  与 m
 *  表示泥地的两条边长，a
 *  表示正方形瓷砖的边长，题目保证，1≤n,m,a≤108
 * 。
 *
 * 输出：
 * 输出共一行，包含一个整数，表示最少需要的瓷砖数量。
 *
 * 样例输入：
 * 6 6 4
 * 样例输出：
 * 4
 * 样例输入：
 * 4 7 4
 * 样例输出：
 * 2
 * 注释：
 * 题目保证，对于 20%
 *  的数据，有 n=a
 * 。
 *
 * 题目保证，对于 20%
 *  的数据，有 n=1
 *  或者 m=1
 * 。
 *
 * 题目保证，对于 20%
 *  的数据，有 n=m
 * 。
 *
 * 题目保证，对于 80%
 *  的数据，有 1≤n,m,a≤104
 * 。
 *
 * 题目保证，对于 100%
 *  的数据，有 1≤n,m,a≤108
 * 。
 * @author: scarborough
 * @datetime: 2025/3/20 - 12:37
 * @status: AC
 */
public class PROB1027 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int a = sc.nextInt();

        int length = n % a == 0 ? n / a : n / a + 1;
        int width = m % a == 0 ? m / a : m / a + 1;
        System.out.println((long) length * width);
    }
}
